package com.hmall.feign.common;

import com.hmall.domain.dto.PageDTO;
import com.hmall.domain.pojo.Item;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 商品远程调用接口
 *
 * @Author XiaoJiangShi
 * @Date 2022/8/10 15:11
 * @Blog blog.XiaoJiangShi.net/996.mba
 * @Description:
 */
@FeignClient("itemservice")
public interface ItemFeignClient {

    /**
     * 分页功能 远程调用类
     *
     * @param page 当前页码
     * @param size 页面大小
     * @return 分页数据
     */
    @GetMapping("/item/list")
    PageDTO<Item> list(@RequestParam("page") Integer page, @RequestParam("size") Integer size);

    /**
     * 根据id查找商品
     *
     * @param id 商品id
     * @return 商品对象
     */
    @GetMapping("/item/{id}")
    Item findById(@PathVariable Long id);

    /**
     * 根据id和订单商品数量，减少库存
     *
     * @param itemId 商品id
     * @param num    商品数量
     */
    @PutMapping("/item/reduce")
    void reduceIvo(Long itemId, Integer num, Integer status);
}

